home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio 2000
/
Ham Radio 2000.iso
/
ham2000
/
morse
/
staton
/
isr_init.txt
< prev
next >
Wrap
Text File
|
1994-04-21
|
4KB
|
246 lines
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
; COPYRIGHT (C) 1994 KEN STATON ;
; ALL RIGHTS RESERVED ;
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
;
; SET INTERRUPT VECTOR TABLE
;
.ORG 0000H
LJMP INIT ; RESET VECTOR
.ORG 0003H
LJMP EXT0 ; EXTERNAL INTERRUPT 0 ROUTINE
.ORG 000BH
LJMP TIM0 ; TIMER 0 INTERRUPT
.ORG 0013H
LJMP EXT1 ; EXTERNAL INTERRUPT 1 ROUTINE
.ORG 001BH
LJMP TIM1 ; TIMER 1 INTERRUPT
.ORG 0023H
LJMP SER_INT ; SERIAL INTERRUPT
;
; TIMER 0 ISR
;
TIM0 NOP
RETI
;
; TIMER 1 ISR
;
TIM1 NOP
RETI
;
; EXTERNAL 0 ISR
; Not re-entrant.
; Modifies R4 = MODE
; Modifies RL & RH = Random number seed
;
EXT0
CLR IEC0 ;DISABLE EXT0 INTS
PUSH PSW ;SAVE STATUS!
PUSH ACC ;SAVE ACC
PUSH R6 ;SAVE R6
MOV RL,TL1 ;Set new random seed based on T1
MOV RH,TH1
MOV R6,#DEBOUNCE ;Debounce switch delay
DJNZ R6,$
LCALL WAITSEC ; PUT DELAY BEFORE OPTION LIST...
SEL0 MOV A,#IDX_G ;5 char groups
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL1
MOV R4,#GRP
LJMP SEL_EXIT
SEL1 MOV A,#IDX_R ;Random chars
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL2
MOV R4,#RAN
LJMP SEL_EXIT
SEL2 MOV A,#IDX_S ;Sequence chars
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL3
MOV R4,#SEQ
LJMP SEL_EXIT
SEL3 MOV A,#IDX_T ;Talk toggle
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL4
CPL SPEAK
LJMP SEL_EXIT
SEL4 MOV A,#IDX_5 ;Farnsworth 16@5wpm
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL5
MOV FSPD,#(WPM16/2)
MOV CSPD,#(WPM2/2)
MOV DLY_B4,#WPM5DB
MOV DLY_AR,#WPM5DA
LJMP SEL_EXIT
SEL5 MOV A,#IDX_1 ;Farnsworth 18@13wpm
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL6
MOV FSPD,#(WPM18/2)
MOV CSPD,#(WPM9/2)
MOV DLY_B4,#WPM13DB
MOV DLY_AR,#WPM13DA
LJMP SEL_EXIT
SEL6 MOV A,#IDX_2 ;Farnsworth 23@20wpm
LCALL DO_SAYIT
LCALL WAITSEC
JNB KEY,SEL7
MOV FSPD,#(WPM23/2)
MOV CSPD,#(WPM16/2)
MOV DLY_B4,#WPM20DB
MOV DLY_AR,#WPM20DA
LJMP SEL_EXIT
SEL7 MOV A,#IDX_X ;Exit, no changes
LCALL DO_SAYIT
LCALL WAITSEC
JB KEY,SEL_EXIT
LJMP SEL0
SEL_EXIT
POP R6 ;RESTORE R6
POP ACC ;RESTORE ACC
POP PSW ;RESTORE STATUS
SETB IEC0
RETI
;
; EXTERNAL 1 ISR
;
EXT1 NOP
RETI
;
; SERIAL ISR
;
SER_INT
RETI
;
; *************** END ISR's ***** END ISR's ******************
;
;
; WAITSEC actually waits 0.5 sec
; Modifies ACC and R6
;
WAITSEC
MOV A,#QSECDLY ; 0.25 Sec
QSEC0 MOV R6,#ONE_MS
DJNZ R6,$
DJNZ ACC,QSEC0
MOV A,#QSECDLY ; 0.25 Sec
QSEC1 MOV R6,#ONE_MS
DJNZ R6,$
DJNZ ACC,QSEC1
RET
INIT
;
; system status initialization
;
SETB SPEAK ; TALK ON
SETB CODE ; CODE ON
MOV R4,#RAN ; RANDOM CHAR MODE
#IFNDEF F18 ; use 5@16 as default, unless
; assembled with '-dF18=1'
MOV FSPD,#(WPM16/2) ; 16 WPM element timing
#ELSE
MOV FSPD,#(WPM18/2) ; 18 WPM element timing
#ENDIF
MOV CSPD,#(WPM2/2) ; 5 WPM character rate
MOV DLY_B4,#WPM5DB ; Set delay before speaking
MOV DLY_AR,#WPM5DA ; Set delay after speaking
;
; INITIAL RANDOM SEED
;
MOV RL,#27 ; RN = 2781
MOV RH,#81
MOV PL,RL
MOV PH,RH
;
; PORT PIN CONFIGURATION
;
MOV P1,#0FFH ; SET PORT 1 (1 out enables input)
MOV P3,#0FFH ; SET HIGH TO ALLOW ALTERNATE FUNCTIONS
MOV SP,#SP_INIT ; SET STACK POINTER
;
; IP - INTERRUPT PRIORITY REGISTER
;
MOV IPC,#00000000B ; ALL LOW PRIORITY
MOV TMOD,#00010000B ; TIMER ONE 16 bit
MOV TCON,#01000000B ; TIMER ONE ON, TIMER ZERO OFF, LOW LEVEL INTERRUPTS
MOV TH1,#221 ;timer/cntr 1 H byte
MOV TL1,#0 ;timer/cntr 1 L byte
MOV PCON,#00000000B
MOV SCON,#50H ;Single Proc; mode 1.
;
; INITIAL INTERRUPT SOURCES
; IE - INTERRUPT ENABLE REGISTER
;
MOV IEC,#10000001B ; Global enable IE.7
; Reserved IE.6
; Reserved IE.5
; disABLE SERIAL INTS IE.4
; disable TIMER1 INTS IE.3
; disable EXT1 INTS IE.2
; disable TIMER0 IE.1
; ENABLE EXT0 INTS IE.0
; MOV IEC,#00000000B
;
; END INITIALIZATION
;